#include <iostream>
#include <memory>  //智能指针对应的头文件
using namespace std;

/*
	三种智能指针的区别
	   1.通过对象之间赋值来分析三者的区别
	   2.理论上分析：  
	        三种智能指针对象，理论上来说不能相互赋值(因为对象释放的时候会调用析构，析构会释放堆空间)
			同一个堆空间不可以释放多次
	   3.实际看到的情况
	        (1)auto_ptr对象之间可以赋值
			   策略：把赋值运算右边对象堆空间的所有权转让给左边对象，右边对象指向NULL
			(2)unique_ptr对象之间禁止赋值
	   
*/

int main()
{
	unique_ptr<int> p1(new int);
	
	unique_ptr<int> p2;
	p2=p1;  //禁止对象赋值
	
	return 0;
}